/* 
 微信JSSDK
 安装微信SDK npm install weixin-js-sdk
 */

/* 
 页面内使用
 config: 接口返回的权限验证配置
 shareInfo: 分享参数
 import { useWxSDK } from '@/hooks/useWxSDK.js'
 const { initConfig, onShare } = useWxSDK()
 // 分享
 initConfig(config).then(() => {
	onShare(shareInfo)
 })
 // 分享，监听分享成功和取消分享
 initConfig(config).then(() => {
 	onShare(shareInfo,()={
		// 分享成功
	},()=>{
		// 取消分享
	})
 })
 // 微信扫码
 initConfig(config).then(() => {
 	scanQRCode((res) =>{
		// 扫码成功回调
	},(error) => {
		// 扫码失败回调
	})
 })
 */

//微信js-sdk引入
import * as jweixin from 'weixin-js-sdk'

const wxConfig = {
	// 必填，公众号的appID
	appId: '',
	// 必填，时间戳
	timestamp: '',
	// 必填，签名的随机串
	nonceStr: '',
	// 必填，签名
	signature: '',
	// 必填，需要使用的JS接口列表
	// 文档地址：https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
	jsApiList: [],
	// 非必填，开放标签
	// 开放功能：跳转小程序、跳转APP、音频播放、服务号订阅通知按钮
	// 文档地址：https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html
	openTagList: []
}

const shareInfo = {
	// 分享标题
	title: '',
	// 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
	link: '',
	// 分享图标
	imgUrl: '',
	// 分享描述
	desc: ''
}

const defaultApiList = [
	'checkJsApi',
	'scanQRCode',
	'hideMenuItems',
	'updateTimelineShareData',
	'updateAppMessageShareData'
]

const useWxSDK = () => {
	// 权限验证配置
	const initConfig = (config = wxConfig) => {
		return new Promise((resolve) => {
			jweixin.config({
				debug: false,
				appId: config.appId,
				timestamp: config.timestamp,
				nonceStr: config.nonceStr,
				signature: config.signature,
				jsApiList: config.jsApiList ?? defaultApiList,
				openTagList: [],
			})
			jweixin.ready(() => {
				resolve(true)
			})
		})
	}
	
	// 分享
	const onShare = ( shareData = shareInfo, onSuccess, onCancel) => {
		// 批量隐藏功能按钮，只能隐藏“传播类”和“保护类”按钮
		jweixin.hideMenuItems({
			menuList: []
		})
		//分享到朋友圈
		jweixin.updateTimelineShareData({
			title: shareData.title,
			link: shareData.linkUrl,
			imgUrl: shareData.imgUrl,
			success: function() {
				onSuccess()
			},
			cancel: function () {
				onCancel()
			}
		})
		//分享给朋友
		jweixin.updateAppMessageShareData({
			title: shareData.title,
			desc: shareData.desc,
			link: shareData.linkUrl,
			imgUrl: shareData.imgUrl,
			success: function() {
				onSuccess()
			},
			cancel: function () {
				onCancel()
			}
		})
	}
	
	// 微信扫一扫
	const scanQRCode = ( onSuccess, onCancel ) => {
		jweixin.scanQRCode({
			// 0:微信处理 	 1:直接返回结果
			needResult: 1,
			scanType: ["qrCode","barCode"],
			success: function(res) {
				onSuccess(res)
			},
			cancel: function (res) {
				onCancel(res)
			}
		})
	}
	
	return { initConfig, onShare, scanQRCode }
}

export { useWxSDK }